/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controlador;

import Dao.DaoSocio;
import Dao.DaoUnidadT;
import Modelo.Listas;
import Modelo.Socio;
import Modelo.UnidadT;
import Vista.JFrameUnidadT;
import Vista.Mensajes;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.logging.Level;
import java.util.logging.Logger;

//Hacer editables las cajas de texto
//----------------------------------
/**
 *
 * @author Celeron
 */
public class ControladorUnidadT implements ActionListener, KeyListener {

    private boolean Existe;

    private JFrameUnidadT formUnidadT;
    //private Listas list;

    public ControladorUnidadT() throws SQLException {

        formUnidadT = new JFrameUnidadT();
        formUnidadT.agregarListener(this, this);
        formUnidadT.setVisible(true);
        Enabled(false);
        LlenarComboSocio();

        formUnidadT.getTxtPlaca().addKeyListener(new KeyAdapter() {
            public void keyTyped(KeyEvent e) {
                PlacaKeyTyped(e);
            }

            public void keyPrssed(KeyEvent e) {
                PlacaKeyTyped(e);
            }
        });
    }

    //---------------------------------------
    //Funciona al hacer click en los botones
    //---------------------------------------
    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource().equals(formUnidadT.getBtnSalirUT())) {
            formUnidadT.dispose();
        }

        if (e.getSource().equals(formUnidadT.getBtnBuscarUT())) {

            try {
                new ControladorConsulUnidadT();
            } catch (SQLException ex) {
                Logger.getLogger(ControladorUnidadT.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        if (e.getSource().equals(formUnidadT.getBtnGuardarUT())) {
            Grabar();
        }
        if (e.getSource().equals(formUnidadT.getBtnEliminarUT())) {
            Limpiar();
            Enabled(false);
        }
        if (e.getSource().equals(formUnidadT.getCmbCapacidad())) {
            try {
                ComboSocios();
            } catch (SQLException ex) {
                Logger.getLogger(ControladorUnidadT.class.getName()).log(Level.SEVERE, null, ex);
            }
            if (e.getSource().equals(formUnidadT.getCmbBuscarSocios())) {
                //ComboSocios();
            }
        }
    }

    //-------------------------------------------------------------
    //-------------------------------------------------------------------------------
    //Funciona cuando se presiona una tecla que realiza alguna funcion, Ejemplo Enter
    //-------------------------------------------------------------------------------
    //Ingresa un nuevo chofer en la lista de choferes
    //------------------------------------------------
    private void Grabar() {
        UnidadT Unidad = new UnidadT();
        String Cadena;

        Cadena = formUnidadT.getTxtPlaca().getText();
        if (Cadena.length() == 0) {
            Mensajes.Aviso("Placa Vacia", "");
            formUnidadT.getTxtPlaca().requestFocusInWindow();
            return;
        }

        Cadena = formUnidadT.getTxtDescripcion().getText();
        if (Cadena.length() == 0) {
            Mensajes.Aviso("Descripcion Vacia", "");
            formUnidadT.getTxtDescripcion().requestFocusInWindow();
            return;
        }

        Cadena = formUnidadT.getCmbCapacidad().toString();
        if (Cadena.length() == 0) {
            Mensajes.Aviso("Capacidad Vacia", "");
            formUnidadT.getCmbCapacidad().requestFocusInWindow();
            return;
        }

        Cadena = formUnidadT.getTxtCodCooperativa().getText();
        if (Cadena.length() == 0) {
            Mensajes.Aviso("Codigo de Cooperativa vacio", "");
            formUnidadT.getTxtCodCooperativa().requestFocusInWindow();
            return;
        }

        Cadena = formUnidadT.getTxtCISocio().getText();
        if (Cadena.length() == 0) {
            Mensajes.Aviso("Codigo de Cooperativa vacio", "");
            formUnidadT.getTxtCodCooperativa().requestFocusInWindow();
            return;
        }

        Unidad.UnidadT(formUnidadT.getTxtPlaca().getText(),
                formUnidadT.getTxtDescripcion().getText(),
                Integer.parseInt(formUnidadT.getCmbCapacidad().getSelectedItem().toString()),
                formUnidadT.getCmbBuscarSocios().getSelectedItem().toString(),
                formUnidadT.getTxtCodCooperativa().getText());
        DaoUnidadT daounidadt = new DaoUnidadT();

        if (Existe) {
            daounidadt.ModificarUnidadT(Unidad);

        }
        Existe = false;
        Mensajes.Aviso("Unidad de Transporte guardado con exito", "");
        Limpiar();
        Enabled(false);
        formUnidadT.getTxtPlaca().requestFocusInWindow();
    }
//------------------------------------------------------

    private void Limpiar() {
        formUnidadT.getTxtPlaca().setText("");
        formUnidadT.getTxtDescripcion().setText("");
        formUnidadT.getTxtCISocio().setText("");
        formUnidadT.getTxtCodCooperativa().setText("");
        formUnidadT.getCmbCapacidad().setSelectedIndex(-1);
        formUnidadT.getTxtPlaca().requestFocusInWindow();
        formUnidadT.getCmbBuscarSocios().setSelectedIndex(-1);
    }

    private void ComboCapacidad() {
        int pos;
        pos = formUnidadT.getCmbCapacidad().getSelectedIndex();
        switch (pos) {
            case 0:
                formUnidadT.getTxtDescripcion().setText("Rapidito");
                break;
            case 1:
                formUnidadT.getTxtDescripcion().setText("Ranchera");
                break;
            case 2:
                formUnidadT.getTxtDescripcion().setText("Van");
                break;
            case 3:
                formUnidadT.getTxtDescripcion().setText("Buseta");
                break;
            case 4:
                formUnidadT.getTxtDescripcion().setText("Buseta");
                break;
            case 5:
                formUnidadT.getTxtDescripcion().setText("Bus");
                break;
            case 6:
                formUnidadT.getTxtDescripcion().setText("Bus");
                break;
        }
        formUnidadT.getCmbBuscarSocios().requestFocusInWindow();
    }

    private void LlenarComboSocio() throws SQLException {
        String socio;
        ResultSet rgSocio;
        DaoSocio daoSocio = new DaoSocio();
        rgSocio = daoSocio.ConsultarSocio();
        while (rgSocio.next()) 
        {
            socio = rgSocio.getString("cedula");
            formUnidadT.getCmbBuscarSocios().addItem(socio);
        }
    }

    private void ComboSocios() throws SQLException {
        String cadena, desc, cmbcapac, cisocio, codcoop;
        ResultSet rgSocio;
        DaoSocio daoSocio = new DaoSocio();
        rgSocio = daoSocio.ConsultarSocio();
        cadena = formUnidadT.getTxtPlaca().getText();

        while (rgSocio.next()) {
            if (rgSocio.getString("placa").equals(cadena)) {
                desc = rgSocio.getString("descripcion");
                cmbcapac = rgSocio.getString("capacidad");
                cisocio = rgSocio.getString("cidsocio");
                codcoop = rgSocio.getString("codcooperativa");
                formUnidadT.getTxtCISocio().setText(desc);
                formUnidadT.getTxtCodCooperativa().setText(codcoop);
                formUnidadT.getTxtCISocio().setText(cisocio);
            }
        }
    }

    private void PlacaKeyTyped(KeyEvent e) {
        String Cadena;
        Character Caracter;

        Cadena = formUnidadT.getTxtPlaca().getText();
        if (Cadena.length() == 8) {
            e.consume();
        } else {
            Caracter = e.getKeyChar();
            if (Caracter == '.') {
                e.consume();
            } else if (Character.isLetter(Caracter)) {
                e.setKeyChar(Character.toUpperCase(Caracter));
            }

        }
    }

    private void PlacaKeyPressed(KeyEvent e) throws SQLException {
        ResultSet registroUnidadT;
        DaoUnidadT daounidadt = new DaoUnidadT();

        if (e.getSource().equals(formUnidadT.getTxtPlaca())) {

            String Cadena;
            int PosiUnidadT;

            Cadena = formUnidadT.getTxtPlaca().getText();

            if (e.VK_ENTER == e.getKeyCode() && Cadena.length() != 8) {
                Mensajes.Aviso("Placa invalida", "");
                formUnidadT.getTxtPlaca().requestFocusInWindow();
            }
            Existe = false;
            if (e.VK_ENTER == e.getKeyCode() && Cadena.length() == 8) {

                registroUnidadT = daounidadt.BuscarUnidadT(Cadena);

                if (registroUnidadT.next()) {
                    Existe = true;
                    formUnidadT.getTxtPlaca().setText(registroUnidadT.getString("placa"));
                    formUnidadT.getTxtDescripcion().setText(registroUnidadT.getString("descripcion"));
                    formUnidadT.getCmbCapacidad().setSelectedItem(registroUnidadT.getString("capacidad"));
                    formUnidadT.getTxtCISocio().setText(registroUnidadT.getString("cisocio"));
                    formUnidadT.getTxtCodCooperativa().setText(registroUnidadT.getString("codcoop"));

                    Cadena = registroUnidadT.getString("ci_socio");
                    formUnidadT.getCmbCapacidad().setSelectedItem(Cadena);

                    Mensajes.Aviso("Unidad de Transporte ya Existe", "");
                    Enabled(true);
                    formUnidadT.getTxtDescripcion().requestFocusInWindow();
                    return;
                } else {
                    //Enabled(true);
                    formUnidadT.getTxtDescripcion().requestFocusInWindow();

                }
            }

        }
    }

    @Override
    public void keyTyped(KeyEvent e) {
        if (e.getSource().equals(formUnidadT.getTxtPlaca())) {
            PlacaKeyTyped(e);
        }
    }
//Funciona cuando se suelta una tecla

    @Override
    public void keyPressed(KeyEvent e) {

        if (e.getSource().equals(formUnidadT.getTxtPlaca())) {
            PlacakeyPressed(e);
        }
    }

    private void Enabled(boolean Status) {
        formUnidadT.getTxtPlaca().setEnabled(!Status);
        //formUnidadT.getTxtDescripcion.setEnabled(!Status);
        //formUnidadT.getcmbCapacidad().setEnabled(!Status);
        formUnidadT.getTxtCISocio().setEnabled(!Status);
        formUnidadT.getTxtCodCooperativa().setEnabled(!Status);
    }

    @Override
    public void keyReleased(KeyEvent e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    private void PlacakeyPressed(KeyEvent e) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
}
//-------------------------------------------

